// article.js：文章管理API和工具函数
import request from '@/utils/request'

// 获取分类列表
export function getCategoryList() {
  return request.get('/common/category')
}

// 获取文章列表
export function getArticleList(params) {
  // 根据API文档构建请求参数，确保所有必选参数都有值
  const payload = {
    page: params?.page || 1,
    pageSize: params?.pageSize || 10,
    category_id: params?.category_id || '',
    keyWords: params?.keyWords || '',
    status: params?.status || ''
  }

  // 处理特殊参数情况
  // 1. 分页参数必须为正整数
  payload.page = Math.max(1, parseInt(payload.page) || 1)
  payload.pageSize = Math.max(1, parseInt(payload.pageSize) || 10)

  // 2. 状态参数：如果为空字符串，则移除该参数（表示查询所有状态）
  if (payload.status === '' || payload.status === null || payload.status === undefined) {
    delete payload.status
  } else {
    payload.status = parseInt(payload.status)
  }

  // 3. 分类参数：如果为空字符串，则移除该参数（表示查询所有分类）
  if (payload.category_id === '' || payload.category_id === null || payload.category_id === undefined) {
    delete payload.category_id
  }

  // 4. 关键词参数：如果为空字符串，则移除该参数
  if (payload.keyWords === '' || payload.keyWords === null || payload.keyWords === undefined) {
    delete payload.keyWords
  }

  return request.post('/management/article/page', payload)
}

// 获取文章详情
export function getArticleDetail(articleId) {
  return request.get('/management/article/articleDetail', {
    params: { articleId }
  })
}

// AI审核
export function aiReview(articleId) {
  return request.get('/management/article/aiReview', { params: { articleId }})
}

// AI批量审核
export function aiCheck(articleIds) {
  return request.get('/management/article/ai_check', {
    params: { articleIds }
  })
}

// 提交审核/封禁操作
export function submitReview(data) {
  // 根据后端接口，需要传递数组格式的数据
  const payload = Array.isArray(data) ? data : [data]
  return request.post('/management/article/checkStatus', payload)
}

// 状态名称映射
export const statusMap = {
  1: '草稿',
  2: '已发布',
  3: '隐藏',
  4: '待审核',
  5: '审核未通过',
  6: '已封禁',
  7: '已删除'
}

// 动态分类映射（从API获取）
export function createCategoryMap(categoryList) {
  const map = {}
  if (Array.isArray(categoryList)) {
    categoryList.forEach(category => {
      map[category.categoryId] = category.name
    })
  }
  return map
}

// 操作类型映射
export const actionMap = {
  2: '通过审核',
  5: '拒绝审核',
  6: '封禁文章',
  7: '删除文章'
}

// 工具函数：获取分类标签类型
export function getCategoryTagType(categoryId) {
  const typeMap = { jiuye: 'success', study: 'primary', emotion: 'warning' }
  return typeMap[categoryId] || 'info'
}

// 工具函数：获取状态标签类型
export function getStatusTagType(status) {
  const typeMap = { 1: 'info', 2: 'success', 3: 'warning', 4: 'warning', 5: 'danger', 6: 'info', 7: 'danger' }
  return typeMap[status] || 'info'
}

// 工具函数：检查是否可以审核
export function canReview(status) {
  return [4, 5, 6].includes(status)
}

// 工具函数：检查是否可以封禁
export function canBan(status) {
  return [2, 3].includes(status)
}

// 工具函数：检查是否可以删除
export function canDelete(status) {
  return [1, 2, 3, 4, 5, 6].includes(status)
}

